//
// Created by Jisam on 2024/8/14 21:08.
// solve c2
// prefix + combination
#include <bits/stdc++.h>

#define endl "\n"
#define PSI pair<string,int>
#define PII pair<int,int>
#define PDI pair<double,int>
#define PDD pair<double,double>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>

#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
#define u32 unsigned
#define i64 long long
#define u64 unsigned long long

using namespace std;


void solve() {
    // 读取整数n，表示数组的长度
    int n;
    cin >> n;

    // 初始化一个三维数组a，用于存储三组整数
    array<vector<int>, 3> a;
    // 对数组a的每一维进行初始化，使其大小为n
    for (int i = 0; i < 3; i++) {
        a[i].resize(n);
    }

    // 初始化总计变量tot，用于存储第一组整数的总和
    i64 tot = 0;
    // 双层循环读取三组整数，并累加第一组整数的元素到tot
    for (int j = 0; j < 3; j++) {
        for (int i = 0; i < n; i++) {
            cin >> a[j][i];
            if (j == 0) {
                tot += a[j][i];
            }
        }
    }

    // 初始化一个排列数组perm，用于在后续的排列组合中遍历数组a的元素
    array<int, 3> perm {0, 1, 2};
    // 使用标准库的next_permutation函数进行排列组合
    do {
        // 初始化左右索引数组l和r，用于记录满足条件的子数组的起始和结束位置
        array<int, 3> l {}, r {};
        // 初始化当前索引cur和判断标志ok，用于在遍历过程中判断是否满足条件
        int cur = 0;
        bool ok = true;
        // 遍历排列组合中的每个元素
        for (int i = 0; i < 3; i++) {
            // 根据当前排列组合，设置子数组的起始位置
            l[perm[i]] = cur + 1;
            // 初始化子数组的和sum，并通过while循环计算当前排列组合下，满足条件的子数组的和
            i64 sum = 0;
            while (sum < (tot + 2) / 3 && cur < n) {
                sum += a[perm[i]][cur++];
            }
            // 判断当前子数组的和是否满足条件，如果不满足，则设置标志ok为false，跳出循环
            if (sum < (tot + 2) / 3) {
                ok = false;
                break;
            }
            // 记录当前子数组的结束位置
            r[perm[i]] = cur;
        }
        // 如果所有子数组都满足条件，则输出结果并返回
        if (ok) {
            for (int i = 0; i < 3; i++) {
                cout << l[i] << " " << r[i] << " \n"[i == 2];
            }
            return;
        }
    } while (next_permutation(perm.begin(), perm.end()));
    // 如果所有排列组合都不满足条件，则输出-1
    cout << -1 << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T = 1;
    cin >> T;
    while (T--) solve();
//    cout << "\n"[];
    return 0;
}